package fun.easycode.webterminal.service;

import fun.easycode.webterminal.common.contract.R;
import fun.easycode.webterminal.service.dto.SftpDTO;
import fun.easycode.webterminal.service.dto.SftpFileContentDTO;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;

import java.io.InputStream;
import java.io.OutputStream;
import java.util.function.Consumer;

public interface SftpService {
    R<SftpDTO> ls(String id, String path);
    R<?> upload(String id, String path, String fileName, InputStream stream);
    void uploadSSE(String id, String path, String fileName, MultipartFile file, SseEmitter emitter);
    R<?> delete(String id, String path);
    void download(String id, String path, OutputStream stream, Consumer<Long> sizeConsumer);
    
    /**
     * 获取文件内容
     * @param id 连接ID
     * @param path 文件路径
     * @return 文件内容DTO
     */
    SftpFileContentDTO getFileContent(String id, String path);
    
    /**
     * 保存文件内容
     * @param id 连接ID
     * @param path 文件路径
     * @param content 文件内容
     * @param lastModified 最后修改时间
     * @return 保存结果
     */
    R<Void> saveFileContent(String id, String path, String content, Long lastModified);
}
